home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1997 #3
/
Amiga Plus CD - 1997 - No. 03.iso
/
pd
/
programmierung
/
alienbreed3d2_src
/
cheesesauce
/
somethingstrange.s
< prev
next >
Wrap
Text File
|
1997-01-31
|
4KB
|
190 lines
;this program uses the task oriented ctp routine to display
;a simple picture.
include "workbench:utilities/devpac/system.gs"
scrwid EQU 192
scrht EQU 160
;first open a screen and allocate a chunky buffer
move.l 4.w,a6
move.l #INTUINAME,a1
move.l #36,d0
jsr _LVOOpenLibrary(a6)
move.l d0,INTUIBASE
beq nointui
move.l 4.w,a6
move.l #GFXNAME,a1
move.l #36,d0
jsr _LVOOpenLibrary(a6)
move.l d0,GFXBASE
beq nogfx
move.l #0,a0
move.l #MYSCREENTAGS,a1
move.l INTUIBASE,a6
jsr _LVOOpenScreenTagList(a6)
move.l d0,SCREENBASE
beq noscreen
move.l 4.w,a6
move.l #scrwid*scrht,d0
move.l #0,d1 ;best possible memory
jsr _LVOAllocMem(a6)
move.l d0,CHUNKYBUFFER
beq nochunky
move.l #scrwid*scrht,d0
move.l #0,d1 ;best possible memory
jsr _LVOAllocMem(a6)
move.l d0,CHUNKYCOMPARE
beq nochunkycomp
move.l #scrwid*scrht,d0
move.l #MEMF_CHIP,d1
jsr _LVOAllocMem(a6)
move.l d0,CHIPBUF1
beq nochipbuf1
move.l #scrwid*scrht,d0
move.l #MEMF_CHIP,d1
jsr _LVOAllocMem(a6)
move.l d0,CHIPBUF2
beq nochipbuf2
move.l 4.w,a6
move.l #-1,d0
jsr _LVOAllocSignal(a6)
move.l d0,SIG1
blt nosig1
move.l 4.w,a6
move.l #-1,d0
jsr _LVOAllocSignal(a6)
move.l d0,SIG2
blt nosig2
;set the signals to say that the previous ctp conversion
;has been completed
move.l 4.w,a6
move.l SIG1,d0
or.l SIG2,d0
move.l d0,d1
jsr _LVOSetSignal(a6)
;initialise ctp routine
move.l CHUNKYBUFFER,a0 ;chunky buffer
move.l CHUNKYCOMPARE,a1 ;chunky compare buffer
move.l SCREENBASE,a2
lea sc_BitMap(a2),a2
lea bm_Planes(a2),a2 ;plane pointer
move.l GFXBASE,a3
move.l #1,d0 ;signals1
move.l #2,d1 ;signals2
move.l #scrwid*scrht,d2 ;number of pixels
move.l #0,d3 ;byte offset
move.l CHIPBUF1,d4
move.l CHIPBUF2,d5
jsr _c2p8_init
notzerozero:
move.w YPOS,d0
mulu.w #scrwid,d0
add.w XPOS,d0
move.l CHUNKYBUFFER,a0
add.b #1,(a0,d0.w)
move.w XPOS,d0
add.w #1,d0
cmp.w #scrwid,d0
blt.s notoffright
move.w #0,d0
move.w YPOS,d1
add.w #1,d1
cmp.w #scrht,d1
blt.s notoffbottom
move.w #0,d1
notoffbottom:
move.w d1,YPOS
notoffright:
move.w d0,XPOS
move.l GFXBASE,a6
jsr _LVOWaitTOF(a6)
jsr _c2p8_go
move.w #$f00,$dff180
move.l SCREENBASE,a0
move.w sc_MouseX(a0),d0
bne.s notzerozero
move.w sc_MouseY(a0),d0
bne.s notzerozero
move.l 4.w,a6
move.l SIG2,d0
jsr _LVOFreeSignal(a6)
nosig2:
move.l 4.w,a6
move.l SIG1,d0
jsr _LVOFreeSignal(a6)
nosig1:
move.l CHIPBUF2,a1
move.l #scrwid*scrht/8,d0
move.l 4.w,a6
jsr _LVOFreeMem(a6)
nochipbuf2:
move.l CHIPBUF1,a1
move.l #scrwid*scrht/8,d0
move.l 4.w,a6
jsr _LVOFreeMem(a6)
nochipbuf1:
move.l CHUNKYCOMPARE,a1
move.l #scrwid*scrht/8,d0
move.l 4.w,a6
jsr _LVOFreeMem(a6)
nochunkycomp:
move.l CHUNKYBUFFER,a1
move.l #scrwid*scrht/8,d0
move.l 4.w,a6
jsr _LVOFreeMem(a6)
nochunky:
move.l SCREENBASE,a0
move.l INTUIBASE,a6
jsr _LVOCloseScreen(a6)
noscreen:
move.l GFXBASE,a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
nogfx:
move.l INTUIBASE,a1
move.l 4.w,a6
jsr _LVOCloseLibrary(a6)
nointui:
rts
INTUIBASE: dc.l 0
GFXBASE: dc.l 0
SIG1: dc.l 0
SIG2: dc.l 0
INTUINAME: dc.b "intuition.library",0
GFXNAME: dc.b "graphics.library",0
even
MYSCREENTAGS:
dc.l SA_Width,scrwid
dc.l SA_Height,scrht
dc.l SA_Depth,8
; dc.l SA_DisplayID
; dc.l LORES_KEY
dc.l SA_Quiet,-1
dc.l SA_AutoScroll,-1
dc.l -1,-1
SCREENBASE: dc.l 0
CHUNKYBUFFER: dc.l 0
CHUNKYCOMPARE: dc.l 0
CHIPBUF1: dc.l 0
CHIPBUF2: dc.l 0
XPOS: dc.w 0
YPOS: dc.w 0
even
include "ab3:source_4000/somethingstrange2.s"